package exception;
/**
 * JAVA 异常处理机制
 * java.lang.Throwable是所有异常的超类，下面派生了两个子类型:
 * Exception:一般表示程序出现的异常，是可恢复的异常。
 * Error:一般表示系统级别的错误，不可恢复。
 * 异常处理机制通常不关心Error。
 *
 * 异常处理机制:
 * try{
 *     代码片段
 * }catch(XXXException e){
 *     try中出现XXXException后的处理代码
 * }
 *
 */
public class TryCatchDemo {
    public static void main(String[] args) {
        System.out.println("程序开始了");

        //异常处理机制是解决明知道运行可能出现错误但无法通过逻辑规避的问题(例如断网)
        try {
            String line = "a";
            System.out.println(line.length());
            System.out.println(line.charAt(0));
            System.out.println(Integer.parseInt(line));
            //try语句块中出错代码以下的内容均不会被执行!
            System.out.println("!!!!!!!!!!");
            //try中代码不出现下属一场时,catch不会执行
        }
//        catch (NullPointerException e) {
//            System.out.println("空指针异常");
//            //catch可以定义多个,针对不同异常有不同解决办法时可以分别捕获并处理
//        } catch (StringIndexOutOfBoundsException e) {
//            System.out.println("字符串下标越界");
//        }
        //当多个异常具有相同解决办法时可以合并在一个catch中解决
        catch (NullPointerException | StringIndexOutOfBoundsException e) {
            System.out.println("出现了空指针异常或下标越界异常并解决了");
        } catch (Exception e) {
            System.out.println("未知异常!");
        }
        System.out.println("程序结束了");

    }
}
